1.1. Параллельный интерфейс

Параллельные интерфейсы отличаются высокой скоростью обмена, но коротким кабелем и низкой помехозащищенностью. Через параллельный интерфейс, имеющий 25-штырьковый разъем, к компьютеру обычно подсоединен принтер. Этот стандарт называется Centronics, а его отечественный аналог - ИРПР-М.

Pаспределение сигналов по контактам в IBM-компьютере

Контакт

Сигнал

Направление сигнала

1

strob*

строб

источник - приемник

2

date1

данные

источник - приемник

...

...

данные

источник - приемник

9

date8

данные

источник - приемник

10

acknlg*

подтверждение

приемник - источник

11

busy

занят

приемник - источник

12

ре

конец бумаги

приемник - источник

13

select out*

готовность приемника

приемник - источник

14

auto feed*

авт. перевод бумаги

источник - приемник

15

error*

ошибка

приемник - источник

16

init*

сброс

источник - приемник

17

select in*

выбор

источник - приемник

19-25

ground*

земля

 

Знаком * показаны инвертированные сигналы (напр. error), т.е. сигнал активен, когда на линии низкое напряжение (логический "ноль"). Уровни напряжения сигнала соответствуют стандарту ТТЛ-схем: логическая "1" = 2.4-5.25 В, логический "0" = 0-0.5 В.

Процесс установления связи двух устройств в стандарте Centronics происходит так:

1. Компьютер (источник) проверяет нет ли сигнала busy на контакте 11, выставляет данные на контактах 2-9 и подает сигнал strob на контакт 1.

2. Принтер (приемник) по появлению сигнала строб выставляет сигнал busy. После обработки информации он снимает busy и подтверждает прием данных сигналом acknlg.


Рис. 1. Эпюры напряжений при работе интерфейса Centronics

Остальные сигналы менее значимы и могут не использоваться. В случае конца бумаги (pe) или ошибки (error) принтер все равно поднимет сигнал на линии busy. Инициализация принтера может быть произведена не только управляющим сигналом init, но и программно. За один раз передается сразу 8-битный информации (байт), что позволяет передать один из 255 символов таблицы ASCII, которая обычно "прошита" в ПЗУ принтера.

При автоматизации физического эксперимента параллельный интерфейс может использоваться для ввода/вывода цифровой информации по 12 линиям от компьютера (данные - 8 бит + управление - 4 бита) и по 4 линиям к компьютеру (состояние 4 бита). Каждая выходная линия, при соответствующем согласовании, может быть использована для управления состоянием аппаратуры типа "включено-выключено": запуск генератора, опускание пера, открытие шторки и т.д.

Простейший цифро-аналоговый преобразователь (ЦАП), показанный на рис.2, может использоваться для вывода аналоговой информации, например на самописец, осциллограф, динамик и др.

Входные линии параллельного порта можно использовать для ввода состояния клавиш, наличия высокого/низкого уровня сигнала и т.д. в ваших приборах. Например, можно программно легко реализовать простейший счетчик импульсов или частотомер. Если использовать генератор, у которого частота импульсов зависит от емкости (или сопротивления), то можно на его базе изготовить R или C измеритель.


Рис. 2. Простейший ЦАП на основе регистра (параллельного порта)

Обратите внимание на тот факт, что некоторые линии управления и состояние - инвертированы.

Для программирования данного интерфейса служат три регистра по 8 бит каждый с шестнадцатеричным адресами (в адресном пространстве внешних устройств) для первого параллельного интерфейса: 378h - данные, 379h - состояние, 37Ah - управление. Т.е. параллельный порт занимает в адресном пространстве три байта.

Назначение битов регистров

Состояние (379)

Управление (37A)

7

busy (1- занят)

7-5

не используется

6

acknlg (0- подтверждение приема)

4

irq (0-прерывание запрещено)

5

pe (1- нет бумаги)

3

slct in (0-отмена выбора)

4

slct out (1- выбран)

2

init (0- инициализация)

3

error (0- ошибка)

1

auto feed (автоперевод строки)

2-0

не используется

0

strob (1- вывод байта)

В системе MS-DOS устройствам параллельных портов ввода-вывода присваивается логические имена LPT1 (PRN), LPT2 и т.д.

Работу с ними обеспечивает прерывание BIOS (basic input/output system) int 17h, которое имеет 3 функции:

0 - символ вывода на печать,

1 - инициализация порта,

2- получение слова состояния.

При этом номер функции заносится в регистр процессора AH, код передаваемого символа в AL, а номер порта (0-2) в DX. После вызова прерывания int 17 в AX окажется слово состояния. В Турбо Паскале в библиотеке DOS есть тип Registers и процедура Intr(n,registers), которые могут использоваться для работы с параллельным портом например так:

function StatPrint: byte; {возвращает слово состояние}
var Reg: Registers;
begin
  Reg.Ah:=2; Reg.Dx:=0; Intr(17, Reg);
end;